/**
 * 实际场景1：比如说，我来到一家书店买书，我要买编程类的书，
 * 分别是“JS高级编程，第三版，2013年出版”、“CSS世界，第一版，2017年出版”、“VUE权威指南，第一版，2018年出版”，
 * 我不用自己去找这些书，而是口头告诉给店员，让他帮我找，并且告诉我价格。
 */

/**
 * 简单工厂模式第一种
 * @param {书名} name 
 * @param {出版时间} year 
 * @param {第几版} vs 
 */
function bookShop(name, year, vs) {
  var book = new Object()
  book.name = name
  book.year = year
  book.vs = vs
  book.price = '暂无定价'
  if (book.name === 'JS高级编程') {
    book.price = 68
  }
  if (book.name === 'CSS世界') {
    book.price = 58
  }
  if (book.name === 'VUE权威指南') {
    book.price = 78
  }
  return book
}

var book1 = bookShop('JS高级编程', '2013', '第三版');
var book2 = bookShop('CSS世界', '2017', '第六版');
var book3 = bookShop('VUE权威指南', '2015', '第一版');
console.log(book1)
console.log(book2)
console.log(book3)
console.log('总价：', book1.price + book2.price + book3.price)

/**
 * 简单工厂模式第二种
 * 根据不同的参数传值返回不同的实例
 */

// 球类工厂

var BaskerBall = function() {
  this.play = () => {
    console.log('打篮球')
  }
}

var FootBall = function() {
  this.play = () => {
    console.log('踢足球')
  }
}

var Ball = function(name) {
  switch (name) {
    case 'basketball':
      return new BaskerBall()
      break;
    case 'football':
      return new FootBall()
      break;
    default:
      return new BaskerBall()
      break;
  }
}

var ball1 = new Ball('basketball');
ball1.play()

var ball2 = new Ball('football');
ball2.play()
